package com.baitengsoft.patentapimonitor.api.service;

import com.baitengsoft.patentapimonitor.api.entity.PacPatentinfoEntity;
import com.baitengsoft.patentapimonitor.api.entity.WebPlatformEntity;
import com.baitengsoft.patentapimonitor.api.model.*;
import com.baitengsoft.patentapimonitor.api.model.param.SearchExpiryNoticeParam;
import com.baitengsoft.patentapimonitor.api.model.param.SearchMonSummaryParam;
import com.baitengsoft.patentapimonitor.api.model.param.SearchPatentParam;
import com.baitengsoft.patentapimonitor.common.utils.PageResult;
import com.baitengsoft.patentapimonitor.common.utils.Res;

import java.io.InputStream;
import java.util.List;

/**
 * 平台专利信息服务
 * @author Chen 2017/12/21
 */
public interface PacPatentinfoService extends BaseService<PacPatentinfoEntity> {
    /**
     * 根据平台id和输入流导入Excel
     */
    Res importPatInfoByPlatforomId(Integer platformid, InputStream inputStream) throws Exception;

    Res saveInportPatInfos(List<PacPatentinfoEntity> entities);

    /**
     * 根据参数搜索
     */
    PageResult<PacPatentInfo> searchByParam(SearchPatentParam param, Integer platformId);

    /**
     * 获取汇总信息
     */
    Res getMonSummaryinfo(WebPlatformEntity platformEntity);


    WebMonSummaryExportinfo getMonSummaryExportinfo(WebPlatformEntity platformEntity);
    /**
     * 获取列表
     */
    PageResult<WebMonSummaryInfo> queryList(SearchMonSummaryParam param, Integer platformid);

    /**
     * 获取区域转入信息
     */
    List<WebMonAnalysisInfo> getInList(Integer platformid, String order, String sort);

    /**
     * 获取区域转出信息
     */
    List<WebMonAnalysisInfo> geOutList(Integer platformid, String order, String sort);

    /**
     * 今年失效信息
     */
    List<WebMonInvalidAnalysisInfo> geInvalidList(Integer platformid, String order, String sort);

    /**
     * 获取即将届满专利
     */
    PageResult<WebExpiryNoticeInfo> getExpiryNoticeList(Integer platformid, SearchExpiryNoticeParam param);

    /**
     * 获取专利权转入信息
     */
    PageResult<WebApplyChangeInfo> getApplyChangeInList(Integer platformid, SearchExpiryNoticeParam param);

    /**
     * 获取专利权转出信息
     */
    PageResult<WebApplyChangeInfo> getApplyChangeOutList(Integer platformid, SearchExpiryNoticeParam param);

    /**
     * 获取失效分析
     */
    PageResult<WebInvalidAnalysisInfo> getInvalidAnalysisList(Integer platformid, SearchExpiryNoticeParam param);
}
